# -*- coding: utf-8 -*-
import os, sys
from elephant_0070_population import Population 

class Prey(Population):
    '''
    Beute Klasse mit den Methoden veränderten Methoden birth und death und der
    vererbten Klasse Population
    '''
    def __init__(self, popDev, birthRate, deathRate, timeStep, timeRange, capacity):
        '''
        Konstruktor der Klasse Beute
        '''
        Population.__init__(self, popDev, birthRate, deathRate, timeStep, timeRange)
        self.capacity = capacity
    
    def birth(self, popDev):
        '''
        Methode zur Berechnung der Geburten mit Kapazitätsgrenze
        '''
        return ((self.capacity-popDev)/self.capacity)*self.birthRate*self.timeStep

    def death(self, popDev):
        '''
        Methode zur Berechnung der Verluste in Abhängigkeit des Treffens mit dem Räuber
        '''
        popDev = popDev + self.treffen(predatorPop)
        return popDev*self.deathRate*self.timeStep

class Predator(Population):
    '''
    Räuber Klasse mit der veränderten Methode birth und der vererbten Klasse Population
    '''
    def __init__(self, popDev, birthRate, deathRate, timeStep, timeRange):
        '''
        Konstruktor der Klasse Predator
        '''
        Population.__init__(self, popDev, birthRate, deathRate, timeStep, timeRange)

    def birth(self, popDev):
        '''
        Methode zur Berechnung der Geburten in Abhängigkeit des Treffens mit der Beute
        '''
        popDev = popDev + self.treffen(preyPop)
        return popDev*self.birthRate*self.timeStep      

    

'''
Testumgebung
'''
preyPop = Prey(10,0.1,0.1,0.125,100,60)
predatorPop = Predator(10, 0.1,0.1,0.125,100)
predPopSim = predatorPop.populationSim()


preyPopSim = preyPop.populationSim()
preyPop.visualisierung(preyPopSim)
predatorPop.visualisierung(predPopSim)
        
